perm filename NWAVE.FAI[IRC,LCS] blob
sn#273055 filedate 1977-03-30 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE WAVE
C00004 00003 L101:
C00006 00004 L6: JSA 16,DPYOUT
C00008 00005 ININT: SETZ
C00009 00006 GNAME: SETZM FILEXT+1
C00010 00007 GETNAM: MOVEI A,
C00011 00008 DSKIN: MOVE NN,[INPO: IOWD =1024,WD]
C00012 ENDMK
C⊗;
TITLE WAVE
EXTERNAL TYPLOC,DDCLR,DPYSET
EXTERNAL DPYOUT,AVECT,ALINE
;******* DDCLR IS IN TVRLIB.REL ********
A←1 ↔ B←2 ↔ C←3 ↔ K←4 ↔ NN←7 ↔ LPDL←←69 ↔ P←17
NB ← 5 ;
BEG: MOVE P,[-LPDL,,PDL-1]
JSA 16,TYPLOC
[-=260]
[-=512]
TRYOV: CLRBFI
OUTSTR [ASCIZ/ TYPE FILE NAME(<CR>=TEST.SND) /]
PUSHJ P,GNAME
OPEN 11,[17↔'DSK '↔0]
JRST 4,.
LOOKUP 11,FILNAM
JRST TRYOV
CLRBFI ;
OUTSTR [ASCIZ/ NUMBER OF BITS (DEFAULT = 12) -- /] ;
HRRZI NB,3 ;
INCHWL B ;
PUSHJ P,ININT ;
CAIN =18 ;
SOJ NB, ;
HRRZI A,=512
HRRZM A,INC#
L8: CLRBFI
OUTSTR [ASCIZ/ TYPE NUM OF SAMPLES(<CR>=512) /]
HRRZI A,=1024
HRRZM A,NZ#
INCHWL B
PUSHJ P,ININT
CAILE =3072 ;WON'T DISPLAY MORE THAN 3072 SMPLS AT A TIME.
MOVEI =3072
MOVEM J#
SETZ
INCHRS B
CAIA
PUSHJ P,ININT
IDIVI (NB) ;
MOVEM NY#
SKIPE B,J
MOVEM B,INC
SETZM JCNT#
HRRZI A,1
HRRZM A,KCNT#
SETZM JZ#
L11: HRRZI A,1
HRRZM A,L#
MOVE A,INC
MOVEM A,LX#
L100: PUSHJ P,DSKIN
HRRZI A,=1024
ADDB A,NZ
CAMGE A,NY
JRST L100
SKIPN NY
JRST L101
SUBI A,=1024
IMULI A,(NB) ;
MOVEM A,KCNT
SOJ A,
MOVEM A,JCNT
L101:
; SETOM X# ADD FOR RESTART ON ZEROS
SETZ K,
MOVE A,BP-2(NB) ;GET POINTER
L2:
; SKIPE WD(K) ADD FOR RESTART ON ZEROS
; SETZM X
ILDB 0,A
HRRZM 0,FW(K)
ILDB 0,A
HRRZM 0,FW+1(K)
CAIE NB,2 ;SKIP IF 18 BIT SAMPLES
ILDB 0,A
HRRZM 0,FW+2(K)
ADDI K,(NB) ;
CAIGE K,=3072
JRST L2
; SKIPE X ADD THIS TO RESTART ON ZEROS
; JRST L8
L1: JSA 16,DDCLR
MOVE A,[=1000.0]
FLTR B,INC
FDVR A,B
MOVEM A,X#
L40: JSA 16,DPYSET
[1]
DP
[=4000]
JSA 16,ALINE
NFHD
[=409]
NFHD
[-=409]
JSA 16,ALINE
[=500]
ZER
NFHD
ZER
L10: MOVE A,[-=500.0]
MOVEM A,Z#
MOVE K,L
L4: AOS JCNT
MOVE A,FW-1(K)
CAMLE A,NEG-2(NB) ;
SUB A,NONE-2(NB) ;
MOVEM A,JZ
IDIV A,SCALE-2(NB) ;DPY SCALE
MOVEM A,JY#
KIFIX A,Z
MOVEM A,JX#
JSA 16,AVECT
JX
JY
CAIN K,=3072
JRST L6
MOVE A,X
FADM A,Z
CAMGE K,LX
AOJA K,L4
L6: JSA 16,DPYOUT
[1]
L31: OUTSTR [ASCIZ/ SMPL /]
MOVE KCNT
PUSHJ P,OUTINT
OUTSTR [ASCIZ/ TO /]
MOVE JCNT
PUSHJ P,OUTINT
OUTSTR [ASCIZ/
/]
L55: MOVE A,J
AOJ A,
JUMPE A,L7
AOJ A,
JUMPE A,L12
L5: CLRBFI
INCHWL B
PUSHJ P,ININT
MOVEM J
SETZ
INCHRS B
CAIA
PUSHJ P,ININT
MOVEM NX
HRRZI A,=3072
CAMGE A,J
MOVEM A,J
L77: SKIPLE A,J
MOVEM A,INC
ADDI A,2
JUMPGE A,L7
JRST L9
L12: MOVE A,L
ADD A,NX#
MOVEM A,LX
MOVE A,KCNT
ADD A,NX
SOJ A,
MOVEM A,JCNT
JRST L7
L9: MOVE A,L
ADD A,J
MOVEM A,LX
MOVE A,KCNT
ADD A,J
SOJ A,
MOVEM A,JCNT
SKIPGE LX
SETZM LX
L7: MOVE A,LX
AOJ A,
MOVEM A,L
MOVE A,INC
ADDM A,LX
MOVE A,JCNT
AOJ A,
MOVEM A,KCNT
MOVE A,L
CAMLE A,[=2048↔=3072]-2(NB)
JRST L11
JRST L1
ININT: SETZ
SETZ C,
CAIN B,"-"
JRST MIN
RECUR: CAIL B,60
CAILE B,71
JRST SYNE
IMULI =10
ADDI -60(B)
GTCHR: INCHRS B
CAIA
JRST RECUR
SYNE: SKIPGE C
MOVNS
POPJ P,
MIN: SETO C,
JRST GTCHR
OUTINT: HRRZI B,16
JUMPE OUTZ
IDIVI =10
ADDI A,60
HRRZM A,BLK1(B)
SOJGE B,OUTINT+1
OCHR: OUTCHR BLK1+1(B)
CAIGE B,15
AOJA B,OCHR
POPJ P,
OUTZ: CAIL B,16
HRLZI B,300000
JRST OCHR
INA5: SETZ A,
HRLZI C,700
INCHWL
CAIE 15
CAIN 12
POPJ P,
IDPB C
TRNN A,177
INCHRS
POPJ P,
JRST .-7
GNAME: SETZM FILEXT+1
SETZM FILPPN
MOVE A,['SND ']
MOVEM A,FILEXT
PUSHJ P,GETNAM
SKIPN A
MOVE A,['TEST ']
GEXT: MOVEM A,FILNAM
CAIE C,"."
JRST NOEXTN
PUSHJ P,GETNAM
MOVEM A,FILEXT
NOEXTN: CAIE C,"["
JRST FFDX
PUSHJ P,GETP
HRLZM A,FILPPN
PUSHJ P,GETP
HRRM A,FILPPN
FFDX: INCHRW C
CAIE C,12
JRST FFDX
POPJ P,
GETNAM: MOVEI A,
MOVE B,[440600,,A]
GETNML: PUSHJ P,RCH
POPJ P,
SUBI C,40
TLNE B,770000
IDPB C,B
JRST GETNML
GETP: MOVEI A,
GETPL: PUSHJ P,RCH
POPJ P,
TRNE A,770000
JRST GETPL
LSH A,6
ADDI A,-40(C)
JRST GETPL
RCH: INCHWL C
CAIN C,42
JRST RCHQ
CAIE C,11
CAIN C," "
JRST RCH
CAIE C,"."
CAIN C,","
POPJ P,
CAIE C,"["
CAIN C,"]"
POPJ P,
RCHQR: CAIGE C,40
POPJ P,
CAIL C,"a"
CAILE C,"z"
CAIA
SUBI C,40
POPJ1: AOS (P)
POPJ P,
RCHQ: INCHWL C
JRST RCHQR
DSKIN: MOVE NN,[INPO: IOWD =1024,WD]
MOVEI NN+1,0
INPUT 11,NN
POPJ P,
SCALE: 64*5
5
BP: POINT 18,WD
POINT 12,WD
NEG: 377777
=2047
NONE: 1000000
=4096
NFHD: -=500
ZER: 0
PDL: BLOCK LPDL
FILNAM: 0
FILEXT: 0
0
FILPPN: 0
BLK1: BLOCK 17
DP: 0
WD: BLOCK =1024
BLOCK =512
FW: BLOCK =1024*3
END BEG